Collaborative document editing may be needed in a variety of contexts. Sometimes, multiple users may wish to concurrently access and make changes to a single document from different devices and/or locations. Sometimes, the same user may wish to edit a document using multiple devices at different times and see the edits synchronized on all devices.
Existing techniques for resolving conflicts between concurrent edits from multiple sources (e.g., devices and/or users) and synchronization between multiple local versions of the same document (replicas) are cumbersome and inefficient. For example, some techniques require expensive network servers and architecture to maintain a central authoritative master copy of the document. Some techniques require complicated locking mechanisms that increase user interface response time and negatively impact user experience. In addition, some of these techniques require Internet access, which means that synchronization may not be available at all time for all devices.